using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;

namespace PBR
{
    /// <summary>
    /// Represents one stroke in the painting
    /// </summary>
    public class Stroke
    {
        #region Member Variables

        // Public Variables

        /// <summary>
        /// Where the stroke is drawn
        /// </summary> 
        public Point Loc;

        /// <summary>
        /// The angle of the stroke
        /// </summary>
        public float Angle;
        
        /// <summary>
        /// The width of the stroke (unrotated)
        /// </summary>
        public int Width;
        
        /// <summary>
        /// The height of the stroke (unrotated)
        /// </summary>
        public int Height;
        
        /// <summary>
        /// When this stroke is painted, higher = later
        /// </summary>
        public int ZOrder;

        /// <summary>
        /// The color of this stroke
        /// </summary>
        public Color BaseColor;

        /// <summary>
        /// The index of brush stroke used
        /// </summary>
        public int BrushIndex;

        #endregion

        #region Member Functions

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="loc">Where the stroke is drawn</param>
        /// <param name="angle">The angle of the stroke</param>
        /// <param name="width">The width of the stroke (unrotated)</param>
        /// <param name="height">The height of the stroke (unrotated)</param>
        /// <param name="zOrder">When this stroke is painted, higher = later</param>
        /// <param name="baseColor">The color of this stroke</param>
        public Stroke(Point loc, float angle, int width, int height, int zOrder,
            Color baseColor, int brushIndex)
        {
            this.Loc = loc;
            this.Angle = angle;
            this.Width = width;
            this.Height = height;
            this.ZOrder = zOrder;
            this.BaseColor = baseColor;
            this.BrushIndex = brushIndex;
        }

        #endregion

    }
}
